/**
 * @Author: HJK
 * @Date: 2023-11-24 11:32:32
 * @LastEditTime: 2023-12-01 13:47:21
 * @LastEditors: HJK
 * @Description: ...
 * @FilePath: \GP_manage_vue2\src\components\tools\setting.js
 * @Version: 1 ...
 */
import { message } from "ant-design-vue/es";
// import defaultSettings from '../defaultSettings';

let lessNodesAppended;

const colorList = [
	{ color: "#F5222D", key: "薄暮" },
	{ color: "#FA541C", key: "火山" },
	{ color: "#FAAD14", key: "日暮" },
	{ color: "#13C2C2", key: "明青" },
	{ color: "#52C41A", key: "极光绿" },
	{ color: "#1890FF", key: "拂晓蓝（默认）" },
	{ color: "#2F54EB", key: "极客蓝" },
	{ color: "#722ED1", key: "酱紫" },
];

const updateTheme = (primaryColor) => {
	// Don't compile less in production!
	/* if (process.env.NODE_ENV === 'production') {
    return;
  } */
	// Determine if the component is remounted
	if (!primaryColor) {
		return;
	}
	const hideMessage = message.loading("正在编译主题！", 0);
	console.info(`正在编译主题!`);
	function buildIt() {
		// 正确的判定less是否已经加载less.modifyVars可用
		if (!window.less || !window.less.modifyVars) {
			return;
		}
		// less.modifyVars可用
		document.documentElement.style.setProperty("--color-theme", primaryColor);
		window.less
			.modifyVars({
				"@primary-color": primaryColor,
			})
			.then(() => {
				hideMessage();
			})
			.catch(() => {
				message.error("Failed to update theme");
				hideMessage();
			});
	}
	if (!lessNodesAppended) {
		// insert less.js and color.less
		const lessStyleNode = document.createElement("link");
		const lessConfigNode = document.createElement("script");
		const lessScriptNode = document.createElement("script");
		lessStyleNode.setAttribute("rel", "stylesheet/less");
		lessStyleNode.setAttribute("href", __webpack_public_path__ + "color.less");
		lessConfigNode.innerHTML = `
      window.less = {
        async: true,
        env: 'production',
        javascriptEnabled: true
      };
    `;
		lessScriptNode.src = "https://gw.alipayobjects.com/os/lib/less.js/3.8.1/less.min.js";
		lessScriptNode.async = true;
		lessScriptNode.onload = () => {
			buildIt();
			lessScriptNode.onload = null;
		};
		document.body.appendChild(lessStyleNode);
		document.body.appendChild(lessConfigNode);
		document.body.appendChild(lessScriptNode);
		lessNodesAppended = true;
	} else {
		buildIt();
	}
};

const updateColorWeak = (colorWeak) => {
	// document.body.className = colorWeak ? 'colorWeak' : '';
	colorWeak ? document.body.classList.add("colorWeak") : document.body.classList.remove("colorWeak");
};

export { updateTheme, colorList, updateColorWeak };
